package com.ourfox.a4.commons.util;

import java.text.SimpleDateFormat;
import java.util.List;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

/**
 * 将集合列表转化为json对象
 * @author Administrator
 *
 */
public final class JsonUtil {
	
	private JsonUtil(){}
	
	/**
	 * 根据集合列表获取JSONObject对象
	 * @param displayDataList 集合列表
	 * @return JSONObject对象
	 * @throws Exception 异常
	 */
	public static JSONObject toJSon(List displayDataList) throws Exception {
		int totalCount = displayDataList == null ? 0 : displayDataList.size();
		return toJSon(displayDataList, totalCount, "");
	}
	
	/**
	 * 根据集合列表、其他信息获取JSONObject对象
	 * @param displayDataList集合列表
	 * @param otherInfo 其他信息
	 * @return JSONObject对象
	 * @throws Exception 异常
	 */
	public static JSONObject toJSon(List displayDataList, String otherInfo) throws Exception {
		int totalCount = displayDataList == null ? 0 : displayDataList.size();
		return toJSon(displayDataList, totalCount, otherInfo);
	}
	
	/**
	 * 根据集合列表、日期实例获取JSONObject对象
	 * @param displayDataList 集合列表
	 * @param df 日期实例
	 * @return JSONObject对象
	 * @throws Exception 异常
	 */
	public static JSONObject toJSon(List displayDataList, SimpleDateFormat df) throws Exception {
		int totalCount = displayDataList == null ? 0 : displayDataList.size();
		return toJSon(displayDataList, totalCount, df, "");
	}
	
	/**
	 * 根据集合列表、日期实例、其他信息获取JSONObject对象
	 * @param displayDataList 集合列表
	 * @param df 日期实例
	 * @param otherInfo 其他信息
	 * @return JSONObject对象
	 * @throws Exception 异常
	 */
	public static JSONObject toJSon(List displayDataList, SimpleDateFormat df, String otherInfo) throws Exception {
		int totalCount = displayDataList == null ? 0 : displayDataList.size();
		return toJSon(displayDataList, totalCount, df, otherInfo);
	}
	
	/**
	 * 根据集合列表、总数、日期实例、其他信息获取JSONObject对象
	 * @param displayDataList 集合列表
	 * @param totalCount 总数
	 * @param df 日期实例
	 * @param otherInfo 其他信息
	 * @return JSONObject对象
	 * @throws Exception 异常
	 */
	public static JSONObject toJSon(List displayDataList, int totalCount, SimpleDateFormat df, String otherInfo) throws Exception {
		JSONObject dataObj = new JSONObject();
		dataObj.put("total", totalCount);
		dataObj.put("otherInfo", otherInfo);
		JSONArray dataArray = new JSONArray();
		
		if(displayDataList != null) {
			for (int i = 0; i < displayDataList.size(); i++) {
				JSONObject obj = JSONObject.fromObject(EntityReflect.getObjectJSonString(displayDataList.get(i), df));
				dataArray.add(obj);
			}
		}
		
		dataObj.put("result", dataArray);
		return dataObj;
	}
	
	/**
	 * 根据列表集合、总数、其他信息获取JSONObject对象
	 * @param displayDataList 集合列表
	 * @param totalCount 总数
	 * @param otherInfo 其他信息
	 * @return JSONObject对象
	 * @throws Exception 异常
	 */
	public static JSONObject toJSon(List displayDataList, int totalCount, String otherInfo) throws Exception {
		JSONObject dataObj = new JSONObject();
		dataObj.put("total", totalCount);
		dataObj.put("otherInfo", otherInfo);
		JSONArray dataArray = new JSONArray();
		dataArray.addAll(displayDataList);
		dataObj.put("result", dataArray);
		return dataObj;
	}
	
	/**
	 * 根据集合列表、总数、日期实例获取JSONObject对象
	 * @param displayDataList 集合列表
	 * @param totalCount 总数
	 * @param df 日期实例
	 * @return JSONObject对象
	 * @throws Exception 异常
	 */
	public static JSONObject toJSon(List displayDataList, int totalCount, SimpleDateFormat df) throws Exception {
		JSONObject dataObj = new JSONObject();
		dataObj.put("total", totalCount);
		JSONArray dataArray = new JSONArray();
		for (int i = 0; i < displayDataList.size(); i++) {
			JSONObject obj = JSONObject.fromObject(EntityReflect.getObjectJSonString(displayDataList.get(i), df));
			dataArray.add(obj);
		}
		dataObj.put("result", dataArray);
		return dataObj;
	}
}
